package aorm

// SQL 接口由各个数据库驱动实现。
type SQL interface {
	DQL
	DML
	TPL
	DDL
}
// 数据查询(检索)语言(Data Query Language)，用来查询数据库中表的记录(数据)。
type DQL interface {
	Select(sliceType interface{}) error //查询所有记录
	Take(structType interface{}) error	//查询一条记录
	Where(desc string, args ...interface{})ISession
	Limit(num int) ISession
	Order(desc string) ISession  // OrderBy
	//GroupBy()
	//Having()
}

// 数据操作语言(动作查询语言)(Data Manipulation Language)，用来对数据库中表的数据进行增删改。添加，修改和删除表中的行。
type DML interface {
	Insert(values ...interface{}) (int64, error) //增
	Delete(where ...interface{}) (int64,error) //删
	Update(kv ...interface{}) (int64, error) //改

}

// 事务处理语言，它的语句能确保被DML语句影响的表的所有行及时得以更新
type TPL interface {
	Begin() (err error) 	//开启事务
	Rollback() (err error)  //事务回滚
	Commit() (err error)    //提交事务
	//Transaction()
}

// 数据定义语言(Data Definition Language)，用来定义数据库对象：数据库，表，列等。关键字：create, drop,alter 等
type DDL interface {
	Create() error
	Drop() error
}
